using System.Collections.Generic;
using System.Threading.Tasks;
using JGSY.CMS.LowCode.Platform.Application.DTOs;

namespace JGSY.CMS.LowCode.Platform.Application.Interfaces
{
    /// <summary>
    /// 用户角色关联应用服务接口。
    /// 提供用户与角色的关联管理、角色分配等用户角色关系维护功能接口定义。
    /// </summary>
    public interface IUserRoleAppService
    {
        /// <summary>
        /// 获取所有用户角色关联
        /// </summary>
        /// <returns>用户角色关联列表</returns>
        Task<IEnumerable<UserRoleDto>> GetAllAsync();
        
        /// <summary>
        /// 为用户分配角色
        /// </summary>
        /// <param name="dto">用户角色关联数据传输对象</param>
        /// <returns>分配任务</returns>
        Task AddAsync(UserRoleDto dto);
        
        /// <summary>
        /// 移除用户的角色
        /// </summary>
        /// <param name="userId">用户标识符</param>
        /// <param name="roleId">角色标识符</param>
        /// <returns>移除任务</returns>
        Task RemoveAsync(long userId, long roleId);
        
        /// <summary>
        /// 获取用户的角色列表
        /// </summary>
        /// <param name="userId">用户标识符</param>
        /// <returns>角色列表</returns>
        Task<IEnumerable<RoleDto>> GetRolesByUserAsync(long userId);
    }
}
